package com.expert.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.expert.dto.UpdatePasswordDTO;
import com.expert.dto.UserDTO;
import com.expert.dto.UserLoginDTO;
import com.expert.pojo.User;
import com.expert.vo.CheckCodeVo;
import com.expert.vo.RemoteUserVo;
import com.expert.vo.UserHomeInfoVo;
import com.expert.vo.UserPageVo;

import java.util.List;

/**
 * @ClassName: UserLoginService
 * @Author: cxs
 * @Date: 2024/01/18 19:58
 * @Description:
 **/

public interface UserService extends IService<User> {
    //登录
    User login(UserLoginDTO userLoginDTO);

    /**
     * 生成Base64验证码
     * @return
     */
    CheckCodeVo createCode();

    /**
     * 获取用户信息
     * @param account
     * @return
     */
    User getUserInfo(String account);

    /**
     * 分页查询用户信息
     * @param page 当前页码
     * @param pageSize 每页条数
     * @param account 账号
     * @param name 姓名
     * @return
     */
    Page<UserPageVo> pageUsers(int page, int pageSize, String account, String name);

    /**
     * 修改用户状态
     * @param status
     */
    void updateUserStatus(Long id,Integer status);

    /**
     * 删除用户信息
     * @param ids
     */
    void deleteUsers(List<Long> ids);

    /**
     * 获取id
     * @param id
     * @return
     */
    User getUserById(Long id);


    /**
     * 修改用户信息
     * @param userDTO
     */
    void updateUserById(UserDTO userDTO);

    /**
     * 重置用户密码
     * @param id
     */
    void resetPassword(Long id);

    /**
     * 添加新用户
     * @param userDTO
     */
    Long addUser(UserDTO userDTO);

    /**
     * 查询为绑定的用户
     * @return
     */
    List<RemoteUserVo> selectByName(String name);

    /**
     * 修改密码
     * @param passwordDTO
     */
    void updateUserPassword(UpdatePasswordDTO passwordDTO);

    /**
     * 获取用户首页信息
     * @return
     */
    UserHomeInfoVo getUserHomeInfo();
}
